﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Student_management.Sql;

namespace Student_management
{ 
    public partial class frmTiepNhanHS : Form
    {
        Connection connect = new Connection();
        HocSinh hs = new HocSinh();
        HocSinhsql hssql = new HocSinhsql();
        int maxtuoi, mintuoi, maxsiso;
        public frmTiepNhanHS()
        {
            InitializeComponent();
        }

        private void frmTiepNhanHS_Load(object sender, EventArgs e)
        {
            this.Dock = DockStyle.Fill;
            AddComboBox();
            loaddata();
            grdt.Columns["STT"].DisplayIndex = 0;
            maxtuoi = int.Parse(connect.getDS("Select GiaTri from QuyDinh where MaQuyDinh = 'MaxTuoi'").Rows[0][0].ToString());
            mintuoi = int.Parse(connect.getDS("Select GiaTri from QuyDinh where MaQuyDinh = 'MinTuoi'").Rows[0][0].ToString());
            maxsiso = int.Parse(connect.getDS("Select GiaTri from QuyDinh where MaQuyDinh = 'MaxSiSo'").Rows[0][0].ToString());
        }

        void loaddata()
        {
            DataTable a = hssql.getHS();
            a.Columns.Add("STT");
            for (int i = 0; i < a.Rows.Count; i++)
            {
                a.Rows[i]["STT"] = i + 1;
            }
            grdt.DataSource = a;
        }

        private void AddComboBox()
        {
            cBolop.ResetText();
            DataTable dt = connect.getDS("Select MaLop From LOP");
            int Count;
            Count = dt.Rows.Count;
            for (int i = 0; i < Count; i++)
            {
                string stringcomboBox = dt.Rows[i]["MaLop"].ToString();
                if (stringcomboBox != "N/A")
                    cBolop.Items.Add(stringcomboBox);
            }
        }

        private HocSinh GetData()
        {
            HocSinh hs = new HocSinh();
            hs.MaHS = txtMaso.Text;
            hs.MaLop = cBolop.Text;
            hs.GioiTinh = cboGioiTinh.Text;
            hs.NgaySinh = dtpNgaySinh.Value;
            hs.TenHS = txtHoTen.Text;
            hs.Email = txtEmail.Text;
            hs.DiaChi = txtDiaChi.Text;
            hs.SDT = txtSDT.Text;
            return hs;
        }

        private void Reset()
        {
            txtHoTen.Text = "";
            txtEmail.Text = "";
            txtDiaChi.Text = "";
            dtpNgaySinh.Text = "1/1/1998";
            cboGioiTinh.Text = "NAM";
            txtSDT.Text = "";
            cBolop.SelectedIndex = 0;
        }
        private void Enable(bool a)
        {
            grdt.Enabled = !a;
            btnThem.Enabled = !a;
            btnSua.Enabled = !a;
            btnXoa.Enabled = !a;
            btnLuu.Enabled = a;
            btnHuy.Enabled = a;
            txtHoTen.Enabled = a;
            dtpNgaySinh.Enabled = a;
            txtDiaChi.Enabled = a;
            cboGioiTinh.Enabled = a;
            cBolop.Enabled = a;
            txtEmail.Enabled = a;
            txtSDT.Enabled = a;
        }
        private void grdt_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            int RowIndex = e.RowIndex;
            txtMaso.Text = grdt.Rows[RowIndex].Cells["MaHS"].Value.ToString();
            txtHoTen.Text = grdt.Rows[RowIndex].Cells["HoTen"].Value.ToString();
            txtEmail.Text = grdt.Rows[RowIndex].Cells["Email"].Value.ToString();
            txtDiaChi.Text = grdt.Rows[RowIndex].Cells["DiaChi"].Value.ToString();
            cboGioiTinh.Text = grdt.Rows[RowIndex].Cells["GioiTinh"].Value.ToString();
            cBolop.Text = grdt.Rows[RowIndex].Cells["MaLop"].Value.ToString();
            txtSDT.Text = grdt.Rows[RowIndex].Cells["SDT"].Value.ToString();
            dtpNgaySinh.Value = DateTime.Parse(grdt.Rows[RowIndex].Cells["NgaySinh"].Value.ToString());
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            Reset();
            Enable(true);
            txtMaso.Text = hssql.SearchDaTaGrid();
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            Enable(true);
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (grdt.SelectedRows.Count > 1)
            {
                if (MessageBox.Show("Bạn Có Chắc Muốn xóa các học sinh đã chọn", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                        for (int i = 0; i < grdt.SelectedRows.Count; i++)
                        {
                            hssql.Xoa(grdt.SelectedRows[i].Cells["MaHS"].Value.ToString());
                        }
                        MessageBox.Show("Xóa Thành Công!");
                    }
                    catch (Exception a)
                    {
                        MessageBox.Show("Không xóa được!", a.ToString());
                    }
                }
            }
            else
                if (MessageBox.Show("Bạn Có Chắc Muốn Xóa Học sinh có mã số " + txtMaso.Text + " Không ?", "Xóa", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (hssql.Xoa(txtMaso.Text))
                    {
                        MessageBox.Show("Xóa Thành Công!");
                    }
                    else
                        MessageBox.Show("Không xóa được!");
                }
            loaddata();
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            Enable(false);
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (txtHoTen.Text == "")
            {
                MessageBox.Show("Không được để trống họ tên", "Lỗi");
                return;
            }
            HocSinh hs = GetData();
            long a = DateTime.Now.Year - hs.NgaySinh.Year;
            if (a > maxtuoi || a < mintuoi)
            {
                MessageBox.Show("Tuổi phải từ " + mintuoi + " đến " + maxtuoi, "Lỗi");
                return;
            }
            if (!long.TryParse(hs.SDT, out a) && hs.SDT != "" || hs.SDT.Length > 15)
            {
                MessageBox.Show("Số điện thoại không hợp lệ", "Lỗi");
                return;
            }
            try
            {
                string Malop = "";
                try
                {
                    Malop = connect.getDS("Select MaLop from HocSinh where MaHS = '" + hs.MaHS + "'").Rows[0][0].ToString();
                }
                catch
                { }

                if (connect.getDS("Select * from HocSinh where MaLop='" + hs.MaLop + "'").Rows.Count == maxsiso && hs.MaLop != Malop)
                {
                    MessageBox.Show("Lớp " + hs.MaLop + " đã đạt sỉ số tối đa", "Lỗi");
                    return;
                }
                else
                {
                    if (hssql.Sua(hs))
                        MessageBox.Show("Cập nhật thành công");
                    else
                    {
                        if (hssql.Them(hs))
                            MessageBox.Show("Thêm thành công !");
                        else
                            MessageBox.Show("Xem lại !");
                    }
                }
            }
            catch
            {
                MessageBox.Show("Xem Lai Du Lieu Da Nhap");
            }
            loaddata();
            Enable(false);
        }
    }
}
